<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>06_函数的柯理化</title>
</head>

<body>

  <!-- 
    函数柯理化
      只是一种闭包的应用
      将 接收多个参数的函数 (一个参数没必要用柯理化)
      变成接收一个参数的函数 
      函数内还可以在继续嵌套函数 让每个函数返回一个新函数并接收一个新的参数
      直到最后返回计算结果.

      目的: 让调用(使用) 函数时更加方便
  -->



  <!-- 普通函数 -->
  <script>
    function fn(reg, str) {
      return reg.test(str);
    };

    const res1 = fn(/^\w{6,12}$/,  '_12_ab');
    console.log(res1);

    const res2 = fn(/^\w{6,12}$/,  '_12_ab_89_123');
    console.log(res2);

    const res3 = fn(/^\w{6,12}$/,  '12345');
    console.log(res3);
  </script>





  <!-- 柯理化函数 -->
  <script>
    function fn(reg) {
      return function(str) {
        return reg.test(str);
      };
    };

    const result = fn(/^\w{6,12}$/);

    const result1 = result('_12_ab');
    console.log(result1);

    const result2 = result('_12_ab_89_123');
    console.log(result2);

    const result3 = result('12345');
    console.log(result3);
  </script>
</body>
</html>
